/******************* Contiene las variables y funciones globales ****************/

#ifndef GLOBAL_H
#define GLOBAL_H

/******************* Declaracion de Variables globales del Host ****************/
int tipoRepresentacion;
int totalGenes;
int totalIndividuos;
int cantidadPoblaciones;// = 1;
int cantCromosomasPoblacion;// = 2;
int cantGenesEnCromosoma;// = 8;
int numeroGeneraciones;


/******************* Declaracion de Variables globales del Device ****************/
__device__ int cantidadPoblacionesDevice;
__device__ int cantCromosomasPoblacionDevice;
__device__ int cantGenesEnCromosomaDevice;
__device__ int totalGenesEnPoblacionDevice;
__device__ int tipoCruzamiento;
__device__ int tipoMutacion;
__device__ int probabilidadCruzamiento;
__device__ int probabilidadMutacion;
__device__ int tipoReemplazo;
__device__ int tipoSeleccion;
__device__ int numeroGeneracionesDevice;
__device__ int gradoNoUniformidad;



/******************* Declaracion de Funciones del Host *************************/
void asignarParametros(int * parametros);

/******************* Declaracion de Funciones Global del Device ******************/
__global__ void asignarParametrosDevice(int * parametros);


/******************* Declaracion de Funciones internas del Device *****************/
__device__ int estaPresente(int valor, int* nuevaPoblacion, int desde, int hasta);
__device__ int posicionPrimerLibre(int* poblacionActual, int posicionNuevoCromosoma);
__device__ int dondeEsta(int* poblacionActual, int valor, int posicionNuevoCromosoma);

#endif  // GLOBAL_H
